﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Capa_Entidad;

namespace Acceso_Datos.Clases_DAO
{
    public class clsHos_CamaDAO
    {
        private BDClinicaEntities ContextoDeObjs = new BDClinicaEntities();

        public bool Insertar(HOS_CAMA Obj)
        {
            try
            {
                ContextoDeObjs.AddObject("HOS_CAMA", Obj);
                ContextoDeObjs.SaveChanges();
                return true;
            }
            catch (Exception)
            {
                return false;
            }
        }
        public bool Modificar(HOS_CAMA obj)
        {
            try
            {
                ContextoDeObjs.AttachTo("HOS_CAMA", obj);
                ContextoDeObjs.ObjectStateManager.ChangeObjectState(obj, System.Data.EntityState.Modified);
                ContextoDeObjs.SaveChanges();
                return true;
            }
            catch (Exception)
            {
                return false;

            }
        }
        public bool Eliminar(HOS_CAMA obj)
        {
            try
            {
                ContextoDeObjs.AttachTo("HOS_CAMA", obj);
                ContextoDeObjs.DeleteObject(obj);
                ContextoDeObjs.SaveChanges();
                return true;
            }
            catch (Exception)
            {
                return false;
            }
        }
        public int TraerUltimoIDCama()
        {
            try
            {
                int codigo = 0;
                var q = from t in
                            (from t in ContextoDeObjs.HOS_CAMA
                             select new
                             {
                                 t.CAM_ID_CAMA,
                                 Dummy = "x"
                             })
                        group t by new { t.Dummy } into g
                        select new
                        {
                            codcama = (System.Int32?)(g.Max(p => p.CAM_ID_CAMA) + 1)
                        };
                codigo = (q.ToList()[0].codcama != null) ? Convert.ToInt32(q.ToList()[0].codcama) : 1;
                return codigo;
            }
            catch (Exception)
            {
                return (1);
            }
        }

        public List<V_Hos_Cama> listar()
        {
            try
            {
                List<V_Hos_Cama> lista = new List<V_Hos_Cama>();
                var q = from c in ContextoDeObjs.V_Hos_Cama
                        orderby c.CAM_CODIGO
                        select c;
                lista = q.ToList();
                return lista;
            }
            catch (Exception)
            {
                return null;
            }

        }

        public List<V_Hos_Cama> listar(int codigo)
        {
            try
            {
                List<V_Hos_Cama> lista = new List<V_Hos_Cama>();
                var q = from c in ContextoDeObjs.V_Hos_Cama
                        where c.idCama == codigo
                        orderby c.CAM_CODIGO
                        select c;
                lista = q.ToList();
                return lista;
            }
            catch (Exception)
            {
                return null;
            }
        }

        public List<HOS_TIPO_CAMA> listarTipoCama()
        {
            try
            {
                List<HOS_TIPO_CAMA> lista = new List<HOS_TIPO_CAMA>();
                var q = from c in ContextoDeObjs.HOS_TIPO_CAMA
                        select c;
                lista = q.ToList();
                return lista;
            }
            catch (Exception)
            {
                return null;
            }
        }

        public List<HOS_ESTADO_CAMA> listarEstadoCama()
        {
            try
            {
                List<HOS_ESTADO_CAMA> lista = new List<HOS_ESTADO_CAMA>();
                var q = from c in ContextoDeObjs.HOS_ESTADO_CAMA
                        select c;
                lista = q.ToList();
                return lista;
            }
            catch (Exception)
            {
                return null;
            }
        }

        public List<HOS_TIPO_CONDICION_OCUPACION> listarTipoCondicionOcuacion()
        {
            try
            {
                List<HOS_TIPO_CONDICION_OCUPACION> lista = new List<HOS_TIPO_CONDICION_OCUPACION>();
                var q = from c in ContextoDeObjs.HOS_TIPO_CONDICION_OCUPACION
                        select c;
                lista = q.ToList();
                return lista;
            }
            catch (Exception)
            {
                return null;
            }
        }
    }
}
